不懂回文自动机的可以看这篇博客。
现在默认大家都懂,用 表示以 结尾的回文串的个数。
由于 表示 的最长回文后缀,所以 (加上 点所标示的一个回文串)
An Ac a day, keeps the doctor away!
显然是一道回文自动机板题。
设 L[i] 表示以 i 号点为左端点的最长回文串 , R[i] 表示以 i 号点为右端点的最长回文串。
L[i] 可以通过将回文串倒过来建自动机求得 , R[i] 可以直接用原回文串建自动机求得。
答案为所有的回文串组合-不相交的回文串组合。
记 cnt 为回文串个数 , 可以通过计算每个节点的回文串数量求得。
不相交的回文组合也比较好求,先算出以 i 为左端点和右端点的回文串数量 L[i] , R[i]。
令s=min(n,m)
i=1∑nj=1∑nijgcd(i,j)